package eva.savant.businessobject.mt;

import eva.savant.businessobject.cm.Compra;
import javax.persistence.*;
import java.util.Date;
import java.util.Collection;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Table(name="MT_ALMACEN")
@javax.persistence.Entity(name = "mt.Almacen")
public class Almacen extends eva.savant.businessobject.Entity {

    @Id
    @Column(name = "ID_ALMACEN", length = 5, nullable = false)
    private String id; //ID Almacen

    @ManyToOne
    @JoinColumn(name = "ID_CENTRO", nullable = false)
    private Centro centro; //ID Centro

    @Basic
    @Column(name = "CODIGO", length = 3, nullable = false)
    private String codigo; //Codigo

    @Basic
    @Column(name = "NOMBRE", length = 30, nullable = false)
    private String nombre; //Nombre

    @Basic
    @Column(name = "DESCRIPCION", length = 70, nullable = true)
    private String descripcion; //Descripcion

    @Basic
    @Column(name = "STOCK", length = 10, nullable = false)
    private Integer stock; //Control Stock Negativo

    @OneToMany
    (mappedBy = "almacen")
    private Collection<Compra> lsCompra;

    @OneToMany
    (mappedBy = "almacen")
    private Collection<AlmaceneroAlmacen> lsAlmaceneroAlmacen;

    @OneToMany
    (mappedBy = "almacen", cascade = CascadeType.ALL, orphanRemoval = true) @LazyCollection(LazyCollectionOption.FALSE)
    private Collection<AlmacenDetalle> lsAlmacenDetalle;

    @OneToMany
    (mappedBy = "almacen")
    private Collection<Inventario> lsInventario;

    @OneToMany
    (mappedBy = "almacen")
    private Collection<Kardex> lsKardex;

    @OneToMany
    (mappedBy = "almacen")
    private Collection<Pexpedicion> lsPexpedicion;


    public Almacen(String id, Centro centro, String codigo, String nombre, String descripcion, Integer stock, Integer operacionId, String sociedadId, Integer usuarioId) {

        this.id= id;

        this.centro= centro;

        this.codigo= codigo;

        this.nombre= nombre;

        this.descripcion= descripcion;

        this.stock= stock;

        this.operacionId= operacionId;

        this.sociedadId= sociedadId;

        this.usuarioId= usuarioId;

    }

    public Almacen() {

    }


    public String getId() {
    
        return id;
    }
    
    public void setId(String id) {
    
        this.id = id;
    }

    public Centro getCentro() {
    
        return centro;
    }
    
    public void setCentro(Centro centro) {
    
        this.centro = centro;
    }

    public String getCodigo() {
    
        return codigo;
    }
    
    public void setCodigo(String codigo) {
    
        this.codigo = codigo;
    }

    public String getNombre() {
    
        return nombre;
    }
    
    public void setNombre(String nombre) {
    
        this.nombre = nombre;
    }

    public String getDescripcion() {
    
        return descripcion;
    }
    
    public void setDescripcion(String descripcion) {
    
        this.descripcion = descripcion;
    }

    public Integer getStock() {
    
        return stock;
    }
    
    public void setStock(Integer stock) {
    
        this.stock = stock;
    }

    public Collection<Compra> getLsCompra() {
    
        return lsCompra;
    }
    
    public void setLsCompra(Collection<Compra> lsCompra) {
    
        this.lsCompra = lsCompra;
    }

    public Collection<AlmaceneroAlmacen> getLsAlmaceneroAlmacen() {
    
        return lsAlmaceneroAlmacen;
    }
    
    public void setLsAlmaceneroAlmacen(Collection<AlmaceneroAlmacen> lsAlmaceneroAlmacen) {
    
        this.lsAlmaceneroAlmacen = lsAlmaceneroAlmacen;
    }

    public Collection<AlmacenDetalle> getLsAlmacenDetalle() {
    
        return lsAlmacenDetalle;
    }
    
    public void setLsAlmacenDetalle(Collection<AlmacenDetalle> lsAlmacenDetalle) {
    
        this.lsAlmacenDetalle = lsAlmacenDetalle;
    }

    public Collection<Inventario> getLsInventario() {
    
        return lsInventario;
    }
    
    public void setLsInventario(Collection<Inventario> lsInventario) {
    
        this.lsInventario = lsInventario;
    }

    public Collection<Kardex> getLsKardex() {
    
        return lsKardex;
    }
    
    public void setLsKardex(Collection<Kardex> lsKardex) {
    
        this.lsKardex = lsKardex;
    }

    public Collection<Pexpedicion> getLsPexpedicion() {
    
        return lsPexpedicion;
    }
    
    public void setLsPexpedicion(Collection<Pexpedicion> lsPexpedicion) {
    
        this.lsPexpedicion = lsPexpedicion;
    }

}
